package api

import (
	"gitee.com/gopher2011/gin"
	"gitee.com/gopher2011/litemall/app/dao"
	"gitee.com/gopher2011/litemall/app/service"
	"net/http"
	"strconv"
)

// advertiseApi 管理对象。
var Advertise = &advertiseApi{}

// 广告表
type advertiseApi struct{}

// 添加 方法: Post 参数: dao.Advertise 路由: /create
func (it *advertiseApi) Create(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.Advertise
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.Advertise.Create(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 编辑 方法: Post 参数: dao.Advertise 路由: /update
func (it *advertiseApi) Update(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.Advertise
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.Advertise.Update(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 删除一条记录 方法: Post 参数: dao.Advertise 路由: /delete
func (it *advertiseApi) Delete(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.Advertise
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.Advertise.Delete(int64(ptr.Id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 广告详情 方法: Get 参数: id 路由: /read
func (it *advertiseApi) Read(r *gin.Context) {
	id, _ := strconv.Atoi(r.Query("id"))
	// 将请求参数解析到 ptr上
	res, err := service.Advertise.GetItem(int64(id))
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}

// 分页查询，返回一个切片 方法: Get 参数: name,content,page,limit,sort,order, 路由: /list
func (it *advertiseApi) List(r *gin.Context) {
	// 将请求参数解析到 ptr上
	var ptr dao.AdvertiseList
	err := r.Parse(&ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
		r.Abort()
	}
	res, err := service.Advertise.List(ptr)
	if err != nil {
		r.JSON(http.StatusBadRequest, gin.H{"msg": "失败!"})
		r.Abort()
	} else {
		r.JSON(http.StatusOK, gin.H{"msg": "成功!", "data": res})
	}
}
